//
// Created by Zhangwj on 2023/9/26.
//

#include "InitValNode.h"

std::unique_ptr<InitValNode> InitValNode::InitValParser(Parser &parser) {
    //InitVal → Exp | '{' [ InitVal { ',' InitVal } ] '}'
    std::unique_ptr<InitValNode> initValNode = std::make_unique<InitValNode>();
    if (parser.getLexType(0) != LexType::LBRACE) {
        initValNode->Exp = ExpNode::ExpParser(parser);
    } else {
        initValNode->InitVals.push_back(InitValNode::InitValParser(parser));
        while (parser.getLexType(0) == LexType::COMMA) {
            parser.next();
            initValNode->InitVals.push_back(InitValNode::InitValParser(parser));
        }
    }
    return initValNode;
}
